home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #2 / Amiga Plus CD - 1995 - No. 2.iso / pd / disktools / jukebox / tape.jb < prev   
Text File  |  1995-04-11  |  2KB  |  126 lines

  1. /* tape recording */
  2.  
  3. /* this script calculates how many tracks will fit
  4. *    on your tape recording, e.g.
  5. *    
  6. *        tape 45
  7. *        
  8. *    will do the job for C-90 tapes.
  9. *
  10. */        
  11.  
  12. /* (c) copyright 1992,93 by F.J. Reichert */
  13.  
  14. zerotime = "00:00:00"
  15. maxtime    = "99:59:99"
  16.  
  17. parse arg tapetime test
  18.  
  19. options failat 11;
  20. trks = numtrks();
  21. options failat 10;
  22. options results;
  23.  
  24. if tapetime = '?' | tapetime = '' then do
  25.     say 'usage: tape <time> [test]';
  26.     exit(0);
  27. end;
  28.  
  29. if trks = 0 then do;
  30.     say 'no tracks found';
  31.     exit(5);
  32. end;
  33.  
  34. do i = 1 to trks;
  35.     toc i;
  36.     parse value result with tracktime ' ';
  37.     cmptime tapetime tracktime;
  38.     if result = 1 then do;
  39.         say 'track #'||i 'will not fit on any take';
  40.         exit 5;
  41.     end;    
  42. end;
  43.  
  44. lost = zerotime;
  45. leaving = tapetime;
  46. remaining = tapetime;
  47. takes = 1;
  48. firsttrack = 1;
  49. i = 1;
  50.  
  51. do forever;
  52.     if i > trks then do;        
  53.         remaining = zerotime;
  54.     end;
  55.     else do;
  56.         toc i;
  57.         parse value result with tracktime ' ';
  58.         remaining = leaving;
  59.         subtime remaining tracktime;
  60.         remaining = result;
  61.     end;
  62.  
  63.     if remaining = zerotime then do;
  64.         lasttrack = i - 1;
  65.         say "0a"x||'Take #'||overlay(takes,' ',1,2) 'from start of track #'||overlay(firsttrack,' ',1,2) 'to end of track #'||overlay(lasttrack,' ',1,2,) 'leaving' leaving
  66.         addtime lost leaving;
  67.         lost = result;
  68.         if test = "" then call record_tape(firsttrack,lasttrack);
  69.         firsttrack = i;
  70.         takes = takes + 1;
  71.         leaving = tapetime;
  72.         if i > trks then leave;
  73.     end;
  74.     else do;
  75.         leaving = remaining;
  76.         i = i + 1;
  77.     end;
  78. end;
  79. say '--- recording complete! ---' lost 'unused on tape';
  80. exit(0);
  81.  
  82. record_tape: procedure
  83.     parse arg first,last .;
  84.     pause;
  85.     say '--- start tape and press [F6], [ESC] to skip take';
  86.     wait fkey 6;
  87.     if rc >= 5 then do;
  88.         say '--- take skipped';
  89.         return 0;
  90.     end;    
  91.     options results;
  92.     toc first;
  93.     parse value result with '(' starttime ':'
  94.     toc last;
  95.     parse value result with '-' endtime ')'
  96.     set track first;
  97.     play;
  98.     say '--- recording started';
  99.     do i = first to last;
  100.         toc i;
  101.         parse value result with abstime ' ' '"' name '"';
  102.         say "09"x||'track #'||overlay(i,' ',1,2) '('||abstime||')' name;
  103.     end;
  104.     subtime left(endtime,2) starttime;
  105.     say '--- no user interaction needed for' left(result,2) 'minutes!';
  106.  
  107.     /* some frames less, or we might never reach it */
  108.     subtime endtime "00:00:10";
  109.     say result;
  110.     wait time result;
  111.     pause;
  112.     return 0;
  113. end;    
  114.  
  115. /* Tell us how many tracks there are on this disc */
  116. numtrks:
  117.     options results;
  118.     toc stem names.;
  119.     if rc = 0 then do
  120.         return(names.0 - 1);
  121.     end;
  122.     else do;
  123.         return(0);
  124.     end;    
  125. end;
  126.